package com.expert.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.expert.dto.EditCategoryDTO;
import com.expert.pojo.Category;
import com.expert.vo.CategoryVo;

import java.util.List;

/**
 * @ClassName: CategoryService
 * @Author: cxs
 * @Date: 2024/03/12 14:38
 * @Description:
 **/
public interface CategoryService extends IService<Category> {
    /**
     * 分页查询专家分类信息
     *
     * @param page          当前页
     * @param pageSize      每页条数
     * @param categoryCode  分类代码
     * @param categoryName  分类名
     * @param categoryLevel 分类级别
     * @return categoryVo 封装的分类信息
     */
    Page<CategoryVo> pageCategory(int page, int pageSize, String categoryCode, String categoryName, Integer categoryLevel,Long categoryParent);

    /**
     * 根据分类级别查询对于的父级分类信息
     * @param level 父级分类级别
     * @return 父级分类信息
     */
    List<Category> getCategoryParent(Integer level);

    /**
     * 添加分类信息
     * @param category 前端传递的分类参数
     * @return success
     */
    void addCategory(Category category);

    /**
     * 删除分类信息
     * @param ids ids
     */
    void deleteCategory(List<Long> ids);

    /**
     * 根据id查询分类信息
     * @param id 分类id
     * @return category
     */
    Category selectById(Long id);

    /**
     * 修改分类信息
     * @param editCategoryDTO 前端传递的分类信息
     */
    void updateCategory(EditCategoryDTO editCategoryDTO);

    /**
     * 获取所以父级分类
     * @return categoryList
     */
    List<Category> getCategoryAllParent();


    List<Category> getCategoryByParentAndLevel(Long parent, Integer level);

    /**
     * 根据分类名查询分类
     * @param name
     * @return
     */
    List<Category> selectByName(String name);
}
